/*
 * Key.h
 *
 *  Created on: 13/10/2009
 *      Author: andres
 *
 * Esta es la clase base de las key (primary key, secundary key)
 */

#ifndef KEY_H_
#define KEY_H_

class Key {

public:

	/**
	  * GetKey
	  *
	  * A partir del datoSerializado devuelve un puntero al key
	  * e indica su tamanio en tamanio
	  *
	  * @author andres
	  *
	  * @param datoSerializado puntero al dato serializado
	  *
	  * @param int aca se pone el tamanio del key devuelto
	  *
	  * @return puntero al key
	  *
	  */
	virtual char* GetKey(char* datoSerializado, int &tamanio)=0;

	/**
	  * GetTamanio
	  *
	  * devuelve el tamanio maximo de la clave
	  *
	  * @author andres
	  *
	  * @return int tamaño maximo de la clave
	  *
	  */
	virtual int GetTamanio()=0;
	
	
	// se necesita para ordenar los registros (lo necesita veronica para la 
	// estrategia de almacenamiento)
	/**
	 * Compara con otro key
	 * 
	 * @author
	 * @param Key* aComparar
	 * @return comparacion (-1 , 0 , 1)
	 * 
	 */
	//virtual int compareTo(Key *aComparar)=0;
};

#endif /* KEY_H_ */
